/**
 * Test .
 */
package fr.afcepf.al22.qualite.test;

import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.List;

import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

import data.IDaoPersonne;
import entitee.Personne;

/**Classe de tests pour le DAO Personne.
 * @author HAL
 *
 */
public class OldTestDaoPersonne {

    /**
     *
     */
    private IDaoPersonne dao;

    /**
     *
     */
    private Personne persNominale;

    /**
     *
     */
    private String dateOfBirth = "12/12/2012";

    /**
     *
     */
    private SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");

    /**
     *
     */
    @Before
    public void setUp() {
        //regeneration de la bdd
        //execution d'un script
        Process proc;
        try {
            String path = Thread.currentThread().getContextClassLoader().getResource("bdd.bat").getPath();
            proc = Runtime.getRuntime().exec(path);
            proc.waitFor();
        } catch (IOException | InterruptedException e1) {
            e1.printStackTrace();
        }

        //initialisation pour les tests.
        try {
            persNominale = new Personne(null, "toto", "paramMail", "paramMdp", sdf.parse(dateOfBirth));
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        //mock dao
        dao = new IDaoPersonne() {

            @Override
            public Personne verifMail(String paramMail) {
                // TODO Auto-generated method stub
                return null;
            }

            @Override
            public List<Personne> rechercher(String paramNom) {
                // TODO Auto-generated method stub
                return null;
            }

            @Override
            public Personne ajouter(Personne paramPers) {
                if (paramPers.getNom() != null && paramPers.getNom().length() <= 45) {
                    paramPers.setId(3);
                }
                return paramPers;
            }
        };
    }
    /**
     *
     */
    @After
    public void tearDown() {
        //traitement apres les tests.
    }
    /**
     *
     */
    @Test
    public void testAjoutNominal() {
        Personne retour = dao.ajouter(persNominale);
        Assert.assertNotNull(retour);
        Assert.assertNotNull(retour.getId());
        Assert.assertEquals(3, retour.getId().intValue());

        Assert.assertNotNull(retour.getNom());
        Assert.assertEquals("toto", retour.getNom());

        Assert.assertNotNull(retour.getMail());
        Assert.assertEquals("paramMail", retour.getMail());

        Assert.assertNotNull(retour.getMdp());
        Assert.assertEquals("paramMdp", retour.getMdp());
        try {
            Assert.assertEquals(sdf.parse("12/12/2012"), retour.getNaissance());
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
    /**
     *
     */
    @Test
    public void testAjoutNomNull() {
        persNominale.setNom(null);
        Personne retour = dao.ajouter(persNominale);
        Assert.assertNotNull(retour);
        Assert.assertNull(retour.getId());

    }

    /**
     *
     */
    @Test
    public void testAjoutNomTrop() {
        for (int i = 0; i < 10; i++) {
            persNominale.setNom(persNominale.getNom() + persNominale.getNom());
        }

        Personne retour = dao.ajouter(persNominale);
        Assert.assertNotNull(retour);
        Assert.assertNull(retour.getId());
    }
}
